package br.com.vendor_engine.repositorio;

import br.com.vendor_engine.entidades.Endereco;
import br.com.vendor_engine.interfaces.InterfaceEndereco;
import br.com.vendor_engine.xmlutil.NewHibernateUtil;
import java.util.List;
import org.hibernate.Session;

public class RepositorioEndereco implements InterfaceEndereco {
    
    private Session s = NewHibernateUtil.getSessionFactory().getCurrentSession();
    private Endereco end = new Endereco();
    
    @Override
    public void salvarEndereco(String cepEndereco, String ruaEndereco, String numeroEndereco, 
            String bairroEndereco, String cidadeEndereco, String estadoEndereco, 
            String paisEndereco, String pontoReferenciaEndereco){       
        
        end.setIdEndereco(0);
        end.setCepEndereco(cepEndereco);
        end.setRuaEndereco(ruaEndereco);
        end.setNumeroEndereco(numeroEndereco);
        end.setBairroEndereco(bairroEndereco);
        end.setCidadeEndereco(cidadeEndereco);
        end.setEstadoEndereco(estadoEndereco);
        end.setPaisEndereco(paisEndereco);
        end.setPontoReferenciaEndereco(pontoReferenciaEndereco);        
        
        s.beginTransaction();
        s.save(end);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        } if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }
        
    }
    
    @Override
    public Endereco getEndereco(){        
        return end;
    }

    @Override
    public void alterarEndereco(int idEndereco, String cepEndereco, String ruaEndereco, 
    String numeroEndereco, String bairroEndereco, String cidadeEndereco, String estadoEndereco, 
    String paisEndereco, String pontoReferenciaEndereco) {
        
        end.setIdEndereco(idEndereco);
        end.setCepEndereco(cepEndereco);
        end.setRuaEndereco(ruaEndereco);
        end.setNumeroEndereco(numeroEndereco);
        end.setBairroEndereco(bairroEndereco);
        end.setCidadeEndereco(cidadeEndereco);
        end.setEstadoEndereco(estadoEndereco);
        end.setPaisEndereco(paisEndereco);
        end.setPontoReferenciaEndereco(pontoReferenciaEndereco);        
        
        s.beginTransaction();
        s.save(end);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        } if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }
    }

    @Override
    public List<Endereco> pegarTodosEndereco() {
        s.beginTransaction();
        List<Endereco> list = (List<Endereco>) s.createQuery("from Endereco").list();
        return list;
    }
    
}
